from utils.file_operation.yaml_control import YamlDataOperation
from config.setting import ensure_path_sep
from utils.models.models import Config
from utils.logging_tools.log_control import INFO

"""
当执行 import config.global_config 时，Python 会查找并加载 global_config.py 模块。
模块加载完成，Python 将模块对象存储在 sys.modules 字典中，键是模块的完整名称（例如 config.global_config），值是模块对象
#后续的 import config.global_config 不会重复执行模块代码, 而是去sys.modules 字典中中查找模块对象
"""

"""
当第一次执行 import config.global_config 时， 加载 config ,config 是一个模块级变量，存储在 global_config.py 的模块作用域中。
sys.modules['config.global_config'] 保存了 global_config 模块对象，其中包含 config 变量。
后续 from config .global_config import config的语句  都不会执行代码 而是去字典中查找对象

"""

"""
每个进程都有独立的内存空间和执行上下文，pytest并行执行的时候，并不会造成竞争读
本段代码会有的性能浪费，多个进程重复加载，可以考虑使用conftest和fixture结合的方式，作用于session，由主进程同步给子进程
"""

_data = YamlDataOperation(ensure_path_sep("\\config\\config.yaml")).get_yaml_data()
INFO.info("读取配置文件成功,执行全局配置初始化操作！")
config = Config(**_data)

if __name__ == '__main__':
    # print(config.redis_db.switch)
    print(type(config.redis_db.db))
